package capaPersistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import data.UsuarioVO;





/**
 * Clase que tiene los metodos para trabajar con la base de datos
 * en el manejo de  Usuarios: Insertar,buscar,eliminar y modificarusuarios
 */
public class UsuarioDAO {

	public boolean insertarUsuario (UsuarioVO usuario, Connection connection) {    
        
        try{
            /* Create "preparedStatement". */
            String queryString = "INSERT INTO Usuario " +
                "(user,pass, nombre,ciudad, fechaNacimiento,rol, direccion,correo) VALUES (?,?,?,?,?,?,?,?)";                    
            PreparedStatement preparedStatement = 
                connection.prepareStatement(queryString);
            
            /* Fill "preparedStatement". */    
            preparedStatement.setString(1, usuario.getUser());
            preparedStatement.setString(2, usuario.getPass());
            preparedStatement.setString(3, usuario.getNombre());
            preparedStatement.setString(4, usuario.getCiudad());
            preparedStatement.setString(5,usuario.getFechaNacimiento());
            preparedStatement.setString(6, usuario.getRol());
            preparedStatement.setString(7, usuario.getDireccion());
            preparedStatement.setString(8, usuario.getEmail());

            /* Execute query. */                    
            int insertedRows = preparedStatement.executeUpdate();
                
            if (insertedRows != 1) {
                throw new SQLException( "Problemas insertando usuarios!!!!");           
                }
            return true;
                
        } catch (SQLException e) {
            e.printStackTrace(System.err);
            return false;
        }
                
    }
	
	public boolean usuarioRegistrado(String login,String pass,Connection connection){
		boolean encontrado=false;
		try{
            /* Create "preparedStatement". */
            String queryString = "SELECT user FROM Usuario " +
                "WHERE user=? AND pass=?";                    
            PreparedStatement preparedStatement = 
                connection.prepareStatement(queryString);
            
            /* Fill "preparedStatement". */    
            preparedStatement.setString(1, login);
            preparedStatement.setString(2, pass);
            /* Execute query. */                    
            ResultSet rs = preparedStatement.executeQuery();
            String signed="";
            
            if(rs.next())
            	signed = rs.getString(1);
            if(signed.equals("")){
            	return encontrado=false;
            }
            else encontrado=true;
                
            
         } catch (Exception e) {
            e.printStackTrace(System.err);
         }
		return encontrado;
	}
	public void eliminarUsuario (UsuarioVO usuario, Connection connection) {    
		      try{
		            /* Create "preparedStatement". */
		            String queryString = "DELETE FROM Usuario " +
		                "WHERE user=?";                    
		            PreparedStatement preparedStatement = 
		                connection.prepareStatement(queryString);
		            
		            /* Fill "preparedStatement". */ 
		            preparedStatement.setString(1, usuario.getUser());
		            

		            /* Execute query. */                    
		           preparedStatement.executeUpdate();
		                
		         } catch (Exception e) {
		            e.printStackTrace(System.err);
		         }                
	}
	
public boolean modificarUsuario (UsuarioVO usuario, Connection connection) {    
        
        try{
            /* Create "preparedStatement". */
            String queryString = "UPDATE  Usuario " +
                "SET  pass=?, nombre=?,ciudad=?,direccion=?,correo=?"+
            	 "WHERE user=?";
                                   
            PreparedStatement preparedStatement = 
                connection.prepareStatement(queryString);
            
            /* Fill "preparedStatement". */    
            
            preparedStatement.setString(1, usuario.getPass());
            preparedStatement.setString(2, usuario.getNombre());
            preparedStatement.setString(3, usuario.getCiudad());
            preparedStatement.setString(4, usuario.getDireccion());
            preparedStatement.setString(5, usuario.getEmail());
            preparedStatement.setString(6, usuario.getUser());

            /* Execute query. */                    
            int insertedRows = preparedStatement.executeUpdate();
                
            if (insertedRows != 1) {
                throw new SQLException( "Problemas modificando usuarios!!!!");           
                }
            return true;
                
        } catch (SQLException e) {
            e.printStackTrace(System.err);
            return false;
        }
                
    }
public UsuarioVO obtenerUsuario (String login,Connection connection){
	UsuarioVO usuario=null;
	try{
        /* Create "preparedStatement". */
        String queryString = "SELECT pass,nombre,ciudad,fechaNacimiento,rol,direccion,correo FROM Usuario " +
            "WHERE user=? ";                    
        PreparedStatement preparedStatement = 
            connection.prepareStatement(queryString);
        
        /* Fill "preparedStatement". */    
        preparedStatement.setString(1, login);
        /* Execute query. */                    
        ResultSet rs = preparedStatement.executeQuery();
        while(rs.next()){
        	String pass = rs.getString(1);
        	String nombre = rs.getString(2);
        	String ciudad = rs.getString(3);
        	String fechaNacimiento = rs.getString(4);
        	String rol = rs.getString(5);
        	String direccion = rs.getString(6);
        	String correo = rs.getString(7);
        	usuario= new UsuarioVO(login,pass,nombre,ciudad,fechaNacimiento,rol,direccion,correo);
        	
        }
        
            
        
     } catch (Exception e) {
        e.printStackTrace(System.err);
     }
	return usuario;
}

}
